////////////////////////////////////////////////////////////////////////////////
// Filename: RenderItem.h
////////////////////////////////////////////////////////////////////////////////
#ifndef _RENDERITEM_H_
#define _RENDERITEM_H_


//////////////
// INCLUDES //
//////////////
#include <windows.h>
#include <xnamath.h>

class Mesh;
class Model3DInstance;
class RenderItemManager;
class ModelAnimationInstanceMesh;

////////////////////////////////////////////////////////////////////////////////
// Class name: CameraClass
////////////////////////////////////////////////////////////////////////////////
class RenderItem
{
public:
	RenderItem();
	RenderItem(const RenderItem&);
	~RenderItem();

	void SetMeshIndex(int pMeshIndex);
	void SetModel3DInstance(Model3DInstance* pModel3DInstance);
	Model3DInstance* GetModel3DInstance();
	Mesh* GetMesh();

	void SetPosition(XMFLOAT3 pPosition);
	void Render();

	void CalculDistance(XMFLOAT3 pOrigine);
	float GetDistance();

	void Remove();

	void SetPrevious(RenderItem* item);
	void SetNext(RenderItem* item);

	RenderItem* GetPrevious();
	RenderItem* GetNext();

	void StartRendering();
	void StopRendering();

	void SetRenderItemManager(RenderItemManager* pManager);

	void RaiseRemoveFlags();
	bool GetRemoveFlag();

private:
	int mMeshIndex;
	Model3DInstance* mModel3DInstance;
	XMFLOAT3 mPosition;
	float mDistanceFromOrigine;
	RenderItem* mPrevRenderItem;
	RenderItem* mNextRenderItem;
	bool mIsRendering;
	RenderItemManager* mManager;
	bool mRemoveFlag;
};

#endif